<?

class modelo__error_handler {

	protected $c;

	public function __construct() {
		
	}
	public function set_handler() {
		error_reporting(E_ALL);
		ini_set('display_errors', '1');
		set_error_handler(array('modelo__error_handler', 'meu_error_handler'));
	}

	public static function meu_error_handler($errno, $errstr, $errfile, $errline) {
		global $db;


		$errortype = array (
				E_ERROR              => 'Error',
				E_WARNING            => 'Warning',
				E_PARSE              => 'Parsing Error',
				E_NOTICE             => 'Notice',
				E_CORE_ERROR         => 'Core Error',
				E_CORE_WARNING       => 'Core Warning',
				E_COMPILE_ERROR      => 'Compile Error',
				E_COMPILE_WARNING    => 'Compile Warning',
				E_USER_ERROR         => 'User Error',
				E_USER_WARNING       => 'User Warning',
				E_USER_NOTICE        => 'User Notice',
				E_STRICT             => 'Runtime Notice',
				E_RECOVERABLE_ERROR  => 'Catchable Fatal Error',
                                E_DEPRECATED         => 'Deprecated'
		);
		if(
                        $errno != E_DEPRECATED &&
                        $errno != E_NOTICE

                        ) {
			$erro = 'Erro <strong>número ' . $errno . " [".$errortype[$errno]."]:</strong> " . $errstr . ", <strong>arquivo: </strong> " . $errfile . "; <strong>linha: </strong>" . $errline;

			echo '<h2 style="color:#ff0000">Por favor informe ao administrador o seguinte erro:</h2>';
			echo $erro;

			try {

				// salvando o erro no banco de dados:
				modelo__conn::get_conn()->q("INSERT INTO log_erros (id, erro, dt) VALUES (NULL, '".addslashes($erro)."', NOW());");
				//echo $db->showQuery();

			}catch(DBException $e) {
				echo '<br>Atenção: Não foi possível salvar o erro no log de erros: ' . $e->getMessage();
			}
			exit(1);
		}
	}
}


?>